package com.norman.sorry.core.boards;

import com.norman.sorry.core.moves.IMove;

/**
 * Represents a game board. This interface requires a few basic methods that are
 * critical to the game.
 * 
 * @author Brian Norman
 * @version 0.0.1 beta
 * @since 0.0.1 beta
 */
public interface IBoard {

   /**
    * Returns if the specified move is a valid move. A valid move is one that
    * does not cause one game piece to remove an other of the same color.
    * 
    * @param move
    *           the game piece move in question.
    * @return if the specified move is valid.
    */
   public boolean isValid(IMove move);

   /**
    * Executes the specified move if it is a valid move. If the move is invalid,
    * a runtime exception will be thrown.
    * 
    * @param move
    *           the move to execute.
    */
   public void move(IMove move);

}
